#include<iostream>
#include<vector>
using namespace std;

//int main()
//{
//	/*vector<int> v1;
//	vector<int> v2(v1);
//	vector<int> v3(4, 100);
//	vector<int> v4(v3.begin(), v3.end());
//	size_t sz;
//	vector<int> v;
//	sz = v.capacity();
//	v.reserve(100);
//	cout << "making v grow:\n";
//	for (int i = 0; i < 100; ++i)
//	{
//		v.push_back(i);
//		if (sz != v.capacity())
//		{
//			sz = v.capacity();
//			cout << "capacity changed: " << sz << '\n';
//		}
//	}*/
//
//	vector<int> v{ 1,2,3,4 };
//	v[0] = 10;
//	cout << v[0] << endl;
//
//	for (size_t i = 0; i < v.size(); i++)
//		cout << v[i] << " ";
//	cout << endl;
//
//	vector<int>swapv;
//	swapv.swap(v);
//
//	cout << "v data:";
//	for (size_t i = 0; i < v.size(); i++)
//		cout << v[i] << " ";
//	cout << endl;
//
//	cout << "swapv data:";
//	auto it = swapv.begin();
//	while (it != swapv.end())
//	{
//		cout << *it << " ";
//		++it;
//	}
//	cout << endl;
//
//	for (auto e : swapv)
//		cout << e << " ";
//	cout << endl;
//
//
//	swapv.erase(swapv.begin() + 1);
//	for (auto e : swapv)
//		cout << e << " ";
//	cout << endl;
//
//
//	return 0;
//}

// 3: erase删除的迭代器如果是最后一个元素，删除之后it已经超过end
// 此时迭代器是无效的，++it导致程序崩溃
int main()
{
	// vector<int> v{ 1,2,3,4,5 };
	vector<int> v{1,2,3,4,5,6};
	auto it = v.begin();
	while (it != v.end())
	{
		/*if (*it % 2 == 0)
			v.erase(it);
		++it;*/

		if (*it % 2 == 0)
			it = v.erase(it);
		else ++it;
	}

	for (auto e : v)
		cout << e << " ";
	cout << endl;
	return 0;
}